# 先注册用户
import os

def 注册():
    while True:
        username=input().strip() #strip()去掉空格
        if username=="":
            print("用户名不能为空")
            continue

        #判断用户名是否存在：可以先读取文件。再查找输入的username是否在文件中
        if os.path.exists("user.txt"): #文件存在
            f=open("user.txt","r",encoding="utf-8")
            if username in f.read():
                print("用户名已存在")
                f.close()
                continue

        #密码也是这样
        password=input().strip()
        if password=="":
            print("密码不能为空")
            continue

        #设置用户权限：1-普通用户，2-管理员
        user_type=input("请输入用户类型(1-普通用户, 2-管理员): ")
        if user_type == "1":
            user_type="user"
            break
        elif user_type=="2":
            user_type="admin"
            break
        else:
            print("无效的用户类型，请输入1或2")

    #写入文件
    f=open("user.txt","w",encoding="utf-8")
    f.write(username+","+password+","+user_type+"\n")
    print("注册成功")
    return True

def 读取文件信息():
    user={}
    #用split分开文件中的信息，读取用户名和密码，和类型
    if os.path.exists("user.txt"): #文件存在
        f=open("user.txt","r",encoding="utf-8")
        # 读取文件的内容，按照列表的形式返回
        lines = f.readlines()
        # 把列表中的每一行去掉换行符
        for i in range(len(lines)):
            lines[i] = lines[i].strip()  # strip()去掉换行符
    #把列表中的每一行按照,分割，存入字典
    for i in range(len(lines)):
        # 每个列表元素按照,分割，再存入字典的key和value中
        temp = lines[i].split(",")  # 把列表每一个元素按照,分割
        username=temp[0]
        password=temp[1]
        user_type=temp[2]
        user[username]=(password,user_type) #用户名作为key，密码和类型作为value

    #返回用户名和密码和类型
    return user

def 登录():
    user=读取文件信息()
    最大登录次数=3

    for i in range(最大登录次数):
        username=input("请输入用户名：").strip()
        password=input("请输入密码：").strip()

        if username in user:
            p,type=user[username]
            if password==p:
                print(f"欢迎{username}，您的用户类型是{type}")
                return username,type
            else:
                print("密码错误")

        if i+1<最大登录次数:
            print(f"还有{最大登录次数-i-1}次机会")

    print("登录尝试次数过多，程序退出。")
    return None, None

def main():
    while True:
        print("1. 注册")
        print("2. 登录")
        print("3. 退出")
        choice = input("请输入您的选择：").strip()

        if choice == "1":
            注册()
        elif choice == "2":
            username, user_type = 登录()
            #如果登录成功，返回用户名和类型，不是none。所以下面if username是判断是否登录成功
            if user_type!=None:
                print(f"{username}登录成功，用户类型：{user_type}")
            else:
                print("登录失败")
        elif choice == "3":
            print("退出程序")
            break
        else:
            print("无效的选择，请重新输入")

if __name__ == "__main__":
    main()
